[Salesforce] マルチ通貨設定 調査報告 その2 – 「高度な通貨管理」 –
Salesforceには一つの組織内で複数の通貨を扱うマルチ通貨の仕組みがあります。
このマルチ通貨設定を使うと具体的に組織にどのようなことが起きるのか、調査してみました。 何回かにわけて記述したいと思います。
「高度な通貨管理」の有効化
前回に引き続いて「高度な通貨管理」の有効化を行い、その影響を調べてみました。
レートは時々刻々と変化します。「高度な通貨管理」を有効化すると、レートを適用する期間を指定できるようになります。
「高度な通貨設定」の有効化は[設定]>[組織情報]>[通貨の設定]画面に移動して、[有効化]のボタンを押して行います。
有効化したら[設定]>[会社の設定]>[通貨の管理]画面から、[期間指定換算レートの管理]ボタンを押すと、期間を指定した換算レートの設定画面が表示されます。
[期間指定換算レートの管理]で設定した期間は商談の完了予定日( CloseDate )1に対して適用されます。 試しに2021/04/21以降の期間とそれより前の期間とで換算レートを変えて、商談の完了予定日を2021/04/20にした金額と2021/04/21にした金額を確認してみます。
日付の設定に応じて金額(JPYの額)が変わっていることが確認できます。
「高度な通貨設定」を有効化すると何が起きるのか?
公式のドキュメントにある通り、期間指定換算レートは商談、商談商品、商談商品スケジュール、キャンペーン商談項目、商談分割、およびこれらのオブジェクトと項目に関連するレポートに対して作用します。そして、売上予測、他のオブジェクト内の通貨項目、または他の種別のレポートの通貨項目では作用しません。
ですので、カスタムオブジェクトの通貨項目に対しては期間指定換算レートは作用しません。 カスタムオブジェクトで金額情報を管理している場合、期間指定換算レートが使えないので注意が必要です。
また、数式の戻り値のデータ型が「通貨」の数式項目を計算する場合にも作用しません。
それでは、その他の留意事項について次に記述します。
一部の積み上げ集計が動かなくなる
商談と商談品目など、双方が期間指定換算レートに対応しているオブジェクトどうしであれば積み上げ集計項目は動作します。しかし、商談と取引先のように一方が期間指定換算レートに対応していないと積み上げ集計が行えません。
Visualforce の および コンポーネントで通貨項目を表示することができなくなる
Visualforceで通貨型の項目に対して<apex:inputField>
および<apex:outputField>
コンポーネントを使うことができなくなります。
使っているVisualforceページにアクセスするとエラーになります。
SOQLはレート換算しない値を返す
SOQLで通貨項目を取得すると、レート換算せずに当該項目に持っている値をそのまま返します。 次画像は通貨にEURとYENを設定した金額( Amount )が共に100の2レコードをSOQLでSELECTした結果です。
金額は100がそのまま取得され、レート換算された値にはならないことがわかります。当然、期間指定換算レートも反映されません。 ですので、VisualforceやApexなどで金額を取得する際に、「その値は何の通貨を使用しての値なのか?」、「いつの時期の値なのか?」を意識して取り扱う必要があります。
まとめ
「高度な通貨管理の有効化」によって組織に生じる事象を中心に調査してみました。 有効化によって期間指定換算レートが使えるようになりますが、その有効範囲は商談を中心とした一部のオブジェクトに限定されました。また、有効化することによって使えなくなる機能や制限なども生じました。 カスタムオブジェクトやVisualforce、Apexを多用している組織にてマルチ通貨を導入するのはハードルが高いという印象を持ちました。
次回はAPI経由のImportやExportで金額を設定、取得した場合の挙動について調査したいと思います。
参考情報
- 当社では受注予定日と名称を変えています。 ↩